Sea \(X_1, X_2, \dots, X_n\) una sucesión de variables aleatorias i.i.d. con esperanza finita \(\mu\) y varianza finita \(\sigma^2\), y \(\bar{X}_n = \frac{X_1 + X_2 + \dots + X_n}{n}\).
Entonces, cuando \(n \to \infty\),
\[
\mathbb{P} \left( \frac{\sqrt{n} (\bar{X}_n - \mu)}{\sigma} \leq x \right) \to \Phi(x) \quad \text{para todo } x \in \mathbb{R}
\]
Ejercicio
Desarrollar el ejemplo 3, generando N= 100, 500, 1000 realizaciones de la sucesión del Error normalizado y construir histogramas/estimación de densidades con los 100, 500, 1000 valores obtenidos cuando M = 500 y 1000. Comparar los histogramas/estimación de densidades así obtenidos con la densidad de una distribución normal centrada con varianza igual a Var(U_1), U_1 ~ Uniforme(0,1). Interpretar los resultados obtenidos.
Ejercicio - Solución para N = 1000
### Ejercicio propuesto: desarrollar el ejemplo 3, generando N= 100, 500, 1000 realizaciones de la sucesión del Error normalizado y construir histogramas/estimación de densidades con los 100, 500, 1000 valores obtenidos cuando M = 500 y 1000. Comparar los histogramas/estimación de densidades así obtenidos con la densidad de una distribución normal centrada con varianza igual a Var(U_1), U_1 ~ Uniforme(0,1). Interpretar los resultados obtenidos.rm(list=ls())library(ggplot2)library(tidyr)# Establecer semilla global para reproducibilidadset.seed(123) # Semilla fija para generar las semillas aleatorias# Función para generar simulaciones del error normalizadosimula_error_normalizado <-function(seed, M) {set.seed(seed) # Semilla específica para cada simulación U <-runif(M) # Muestras uniformes running_mean <-cumsum(U) / (1:M) # Media muestral acumulada norm_error <-sqrt(1:M) * (running_mean -0.5) # Error normalizadoreturn(norm_error[c(500, 1000, 2000, 5000)]) # Devuelve el error normalizado en M=500, M=1000, M=2000 y M=5000}# Parámetros de simulaciónN <-1000# 500, 1000 Número de simulaciones# Generar semillas aleatorias reproduciblessemillas <-sample(1:10^6, N, replace =FALSE)# Generar simulaciones para los valores de M especificadosresultados <-t(sapply(semillas, simula_error_normalizado, M =5000))colnames(resultados) <-c("M500", "M1000", "M2000", "M5000")resultados_df <-data.frame(resultados)# identificador ficticio resultados_df$id <-1:nrow(resultados_df)# Transformar a formato largo especificando id.varsresultados_long <-pivot_longer(resultados_df, cols =-id,names_to ='M',values_to ='Error')# Convertir la columna 'M' en factorresultados_long$M <-factor(resultados_long$M, levels =c("M500", "M1000", "M2000", "M5000"),labels =c("M = 500", "M = 1000", "M = 2000", "M = 5000"))# Crear datos para la densidad teórica de la normal con media 0 y varianza 1/12x_values <-seq(-1.5, 1.5, length.out =1000)density_normal <-dnorm(x_values, mean =0, sd =sqrt(1/12))# Título dinámico con el valor de Ntitulo <-paste("Histograma y estimación de densidad del error normalizado\n", "con densidad teórica N(0, 1/12) - N =", N)# Gráfico con cuatro panelesggplot(resultados_long, aes(x = Error)) +geom_histogram(aes(y = ..density..), bins =30, fill ="blue", alpha =0.4) +geom_density(fill ="blue", alpha =0.2) +geom_line(data =data.frame(x_values, density_normal),aes(x = x_values, y = density_normal),color ="red", linetype ="dashed", size =1) +facet_wrap(~ M, ncol =2) +# Organizar en una cuadrícula de dos columnaslabs(title = titulo,x ="Error normalizado",y ="Densidad") +theme_minimal() +theme(strip.text =element_text(face ="bold"))